home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 February: Technology Seed / Mac Tech Seed Feb '97.toast / ODF Release 3 / ODFDev / Container / Sources / Content.h < prev    next >
Encoding:
Text File  |  1996-12-16  |  7.2 KB  |  253 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                Content.h
  4. //    Release Version:    $ ODF 3 $
  5. //
  6. //    Copyright:            (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #ifndef CONTENT_H
  11. #define CONTENT_H
  12.  
  13. #ifndef PROXY_H
  14. #include "Proxy.h"
  15. #endif
  16.  
  17. #ifndef ITERS_H
  18. #include "Iters.h"
  19. #endif
  20.  
  21. #ifndef FWCOLOR_H
  22. #include "FWColor.h"
  23. #endif
  24.  
  25. // ----- Part Layer -----
  26.  
  27. #ifndef FWCONTNT_H
  28. #include "FWContnt.h"
  29. #endif
  30.  
  31. //========================================================================================
  32. //    Forward Declarations
  33. //========================================================================================
  34.  
  35. class CContainerPart;
  36. class CProxy;
  37. class CContentProxyIterator;
  38. class CContainerSelection;
  39.  
  40. //========================================================================================
  41. //    class CBaseContent
  42. //========================================================================================
  43.  
  44. class CBaseContent : public FW_CContent
  45. {
  46. public:
  47.     friend class CContentProxyIterator;
  48. //----------------------------------------------------------------------------------------
  49. //    Initialization/Destruction
  50. //
  51.   public:
  52.  
  53.     FW_DECLARE_AUTO(CBaseContent)
  54.     
  55.     CBaseContent(Environment* ev, CContainerPart* part);
  56.     CBaseContent(Environment* ev, CBaseContent* other);
  57.  
  58.     virtual ~CBaseContent();
  59.  
  60. //----------------------------------------------------------------------------------------
  61. //    Inherited API
  62. //
  63.   public:
  64.     virtual FW_MProxy*    IsDataOnlyOneProxy(Environment* ev) const;
  65.  
  66. //----------------------------------------------------------------------------------------
  67. //    Overridable API
  68. //
  69.   public:
  70.     virtual void        PostInternalizeProxy(Environment* ev, 
  71.                                              const FW_CPoint& offset, 
  72.                                              CProxy* proxy);
  73.  
  74. //----------------------------------------------------------------------------------------
  75. //    New API
  76. //
  77.   public:
  78.     CProxy*                AddSingleEmbeddedFrame(Environment* ev,
  79.                                         FW_CEmbeddingFrame* scopeFrame,
  80.                                         ODPart* odEmbeddedPart, 
  81.                                         ODFrame* odEmbeddedFrame,
  82.                                         ODShape* suggestedShape,
  83.                                         ODTypeToken viewType);
  84.  
  85.     void                ExternalizeProxyList(Environment* ev,
  86.                                         ODStorageUnit* storageUnit, 
  87.                                         FW_CCloneInfo* cloneInfo,
  88.                                         FW_Fixed offsetX,
  89.                                         FW_Fixed offsetY);
  90.     void                InternalizeProxyList(Environment* ev,
  91.                                             ODStorageUnit* storageUnit, 
  92.                                             FW_CCloneInfo* cloneInfo);
  93.  
  94.  
  95.     void                AddProxy(Environment* ev, CProxy* proxy);
  96.     void                RemoveProxy(Environment* ev, CProxy* proxy);
  97.  
  98.     ODShape*            CalcUpdateShape(Environment* ev);
  99.     void                RedrawProxies(Environment* ev);
  100.  
  101. //----------------------------------------------------------------------------------------
  102. //    Getters & Setters
  103. //
  104.   public:
  105.     unsigned long        CountProxies() const;
  106.     FW_Boolean            IsEmpty() const;
  107.     CProxy*                GetFirstProxy() const;
  108.  
  109.     FW_CColor            GetBackgroundColor() const;
  110.     void                SetBackgroundColor(const FW_CColor& newBackColor);
  111.  
  112. //----------------------------------------------------------------------------------------
  113. //    Data Members
  114. //
  115.   protected:
  116.     CProxyCollection*    fProxyList;    // list of CProxy*    
  117.     FW_CColor            fBackgroundColor;
  118.     CContainerPart*        fContainerPart;
  119. };
  120.  
  121. //----------------------------------------------------------------------------------------
  122. //    CBaseContent::GetBackgroundColor
  123. //----------------------------------------------------------------------------------------
  124. inline FW_CColor CBaseContent::GetBackgroundColor() const
  125. {
  126.     return fBackgroundColor;
  127. }
  128.  
  129. //----------------------------------------------------------------------------------------
  130. //    CBaseContent::SetBackgroundColor
  131. //----------------------------------------------------------------------------------------
  132. inline void CBaseContent::SetBackgroundColor(const FW_CColor& newBackColor)
  133. {
  134.     fBackgroundColor = newBackColor;
  135. }
  136.  
  137. //========================================================================================
  138. //    class CContentProxyIterator
  139. //========================================================================================
  140.  
  141. class CContentProxyIterator : public CProxyCollectionIterator
  142. {
  143.   public:
  144.  
  145.     FW_DECLARE_AUTO(CContentProxyIterator)
  146.  
  147.   public:
  148.     CContentProxyIterator(CBaseContent* content);
  149.     ~CContentProxyIterator();
  150. };
  151.  
  152. //========================================================================================
  153. //    class CPartContent
  154. //========================================================================================
  155.  
  156. class CPartContent : public CBaseContent
  157. {
  158. public:
  159.  
  160.     FW_DECLARE_AUTO(CPartContent)
  161.  
  162.     CPartContent(Environment* ev, CContainerPart* part);
  163.     virtual ~CPartContent();
  164.  
  165.     virtual void        ExternalizeKind(Environment* ev,
  166.                                      ODStorageUnit* storageUnit,
  167.                                      FW_CKind* kind,
  168.                                      FW_StorageKinds storageKind,
  169.                                      FW_CPromise* promise,
  170.                                      FW_CCloneInfo* cloneInfo);
  171.     virtual FW_Boolean    InternalizeKind(Environment* ev,
  172.                                      ODStorageUnit* storageUnit, 
  173.                                      FW_CKind* kind,
  174.                                      FW_StorageKinds storageKind,
  175.                                      FW_CCloneInfo* cloneInfo);
  176.  
  177.     virtual void        PostInternalizeProxy(Environment* ev, 
  178.                                      const FW_CPoint& offset, 
  179.                                      CProxy* proxy);
  180. };
  181.  
  182. //========================================================================================
  183. //    class CSelectionContent
  184. //========================================================================================
  185.  
  186. class CSelectionContent : public CBaseContent
  187. {
  188.   public:
  189.  
  190.     FW_DECLARE_AUTO(CSelectionContent)
  191.  
  192.     CSelectionContent(Environment* ev, 
  193.                       CContainerPart* part, 
  194.                       CContainerSelection* selection);
  195.     virtual ~CSelectionContent();
  196.  
  197.     virtual void        ExternalizeKind(Environment* ev,
  198.                                     ODStorageUnit* storageUnit, 
  199.                                     FW_CKind* kind,
  200.                                     FW_StorageKinds storageKind,
  201.                                     FW_CPromise* promise,
  202.                                     FW_CCloneInfo* cloneInfo);
  203.                                         
  204.     virtual FW_Boolean    InternalizeKind(Environment* ev,
  205.                                     ODStorageUnit* storageUnit, 
  206.                                     FW_CKind* kind,
  207.                                     FW_StorageKinds storageKind,
  208.                                     FW_CCloneInfo* cloneInfo);
  209.  
  210.     virtual void         PostInternalizeProxy(Environment* ev, 
  211.                                     const FW_CPoint& offset, 
  212.                                     CProxy* proxy);
  213.  
  214.     virtual void         IncorporateEmbeddedFrame(Environment* ev, 
  215.                                     FW_CEmbeddingFrame* scopeFrame,
  216.                                     ODFrame* embeddedFrame,
  217.                                     ODShape* suggestedShape,
  218.                                     ODTypeToken viewType);
  219.     virtual void         IncorporateEmbeddedPart(Environment* ev, 
  220.                                     FW_CEmbeddingFrame* scopeFrame,
  221.                                     ODPart* embeddedPart, 
  222.                                     ODShape* suggestedShape,
  223.                                     ODTypeToken viewType);
  224.  
  225.     virtual ODShape*     AcquireSuggestedFrameShape(Environment* ev);
  226.  
  227.   private:
  228.     CContainerSelection*        fContainerSelection;
  229. };
  230.  
  231. //========================================================================================
  232. //    class CUndoContent
  233. //========================================================================================
  234.  
  235. class CUndoContent : public CBaseContent
  236. {
  237. public:
  238.  
  239.     FW_DECLARE_AUTO(CUndoContent)
  240.  
  241.     CUndoContent(Environment* ev, CContainerSelection* selection);
  242.     virtual ~CUndoContent();
  243.  
  244.     // ----- New API -----
  245.     void                 RemoveProxySelection(Environment* ev);
  246.     void                 RestoreProxySelection(Environment* ev);
  247.     void                  CommitPasteDone(Environment* ev);
  248.  
  249. private:
  250.     CContainerSelection*        fContainerSelection;
  251. };
  252.  
  253. #endif